import dotenv  # 导入dotenv库，用于加载.env文件中的环境变量
from injector import Injector  # 导入Injector，用于依赖注入

from config import Config  # 导入自定义的Config类，用于读取和管理配置信息
from internal.router import Router  # 导入自定义的Router类，用于路由管理
from internal.server import Http  # 导入自定义的Http类，用于创建HTTP服务器
from .module  import ExtensionModule
from flask_sqlalchemy import SQLAlchemy
# 加载.env文件中的环境变量到系统环境变量中
dotenv.load_dotenv()

# 创建一个Injector实例，用于依赖注入管理
injector = Injector([ExtensionModule])

# 创建Config实例，读取配置信息
config = Config()

# 通过依赖注入获取Router实例，并创建Http应用对象
# __name__ 代表当前模块名，config和router作为参数传递给Http
app = Http(__name__, config=config, db=injector.get(SQLAlchemy) , router=injector.get(Router))

# 如果当前脚本作为主程序运行，则启动HTTP服务器
if __name__ == '__main__':
    app.run(debug=True)  # 启动服务器，debug=True表示开启调试模式，方便开发时排查问题

